The present invention relates to the migration of data processing resources from a first operating environment to another environment, such as migration of a computer program from a first version of an application-support-infrastructure product to a second version of the same product or to a superseding product.
Modern data processing systems are complex and rely on cooperation between a large number of integrated software and hardware components. That integration is made possible by widespread adoption of open standards by the component providers, but efficient interoperation often requires the different components of a system to implement complementary features. A change to one component may require complementary changes to other components of the system. The present invention addresses problems associated with making such complementary changes.
Many computer programs are referred to as application programs. Application programs perform operations that are directly relevant to functions requested by a user. Some simple examples are the functions of entering data into a spreadsheet application, creating a document using a word processing application, or adding meeting information into a calendar application. Some more complex examples implementing user-requested business functions include the front-end application program of an airline's online flight reservation system or the front-end ordering application of an online product ordering system.
Application programs such as spreadsheets require support from the underlying operating system, data storage components, firmware, processor and other hardware features of a computer on which the application runs. The operating system is an example of an application-support-infrastructure product.
In modern distributed and heterogeneous data processing networks in which different enterprises need to integrate their data processing operations, many application programs also benefit from additional support from so-called “middleware” components that form a support layer between an application program and the operating system. Middleware components include Web servers, application servers, messaging systems and content management systems, and are typically implemented in computer program code for cost reasons and to facilitate ongoing development (although it is well understood that various functions of typical computer programs can be implemented in electronic logic circuits as an alternative to program code). Middleware is another example of a type of application-support-infrastructure product.
Middleware can greatly simplify the task of creating application programs, by implementing a number of common tasks in a separate component that supports a variety of application programs. For example, messaging middleware can shield two communicating application programs from the complexity of network communications, so that the application does not need to know what communication protocols are used, what routes through the network are followed, and what data conversions are required when moving data between heterogeneous systems in a distributed network.
When changes are made to middleware or to an operating system or to other components of the application-support infrastructure within a data processing environment, it is sometimes necessary to also change the application programs which use that infrastructure to enable the application programs to continue making best use of the infrastructure. Such changes are known as “migrating” the application programs.
Some infrastructure changes, such as typical software patches applied to an existing version of an application server or messaging system, do not require application migration or reinstallation; if the application was functioning correctly before the change, the application will continue to function correctly without modification. Other changes require applications to be reinstalled and sometimes to be changed before or during reinstallation—such as when a middleware product is replaced by a later version that includes significant changes, or when a middleware product is replaced by a superseding product.
Unfortunately, application migration is a complex and error-prone task. Many customers that acquire middleware products and other application-support infrastructure products cannot perform migration without assistance. Service personnel are often provided by the middleware vendors to help with application migration, and tools known as “migration wizards” are sometimes also provided.
A migration wizard is a tool for controlling the modification of program code and associated data, such that a program that is targeted for one data processing environment will operate successfully in another data processing environment. As with other “wizards”, a migration wizard includes a user interface that prompts the user when inputs are required (such as when a user is required to confirm an action, select from a set of options, or provide a password). A migration wizard typically modifies an application program so as to interoperate successfully with a changed application-support infrastructure product such as a middleware program. Migration wizards are known for use with products such as source code development tools, application servers, databases, monitoring tools, messaging systems and mail servers, for example.
Currently-available migration wizards do not provide sufficient support to avoid the need for service teams. A migration wizard may not be able to fully migrate a target application program, or the program's configuration information or application data, for a variety of reasons. These reasons can include unexpected configurations and bugs in the previous release of the middleware program or in the migration wizard itself.
Some middleware customers are willing to download and install the latest software patches for their middleware products, and this provides an opportunity for the middleware vendor to provide fixes for any bugs within the migration wizard at the same time as providing updates to the main middleware components. If a problem still arises when the migration wizard is invoked, the customer can work with a service team to complete the migration manually. However, a requirement for all customers to download the latest patch is typically unsatisfactory, because customers do not always want to upgrade their patch level—particularly if that means refreshing the entire product. Furthermore, manually performing migration of the application can be difficult, undocumented, error-prone or even impossible.
Therefore, there is a need for improved solutions for application migration. More generally, a set of complementary computer programs may need to be changed in a way that maintains interoperability and enables full use of the available functions. There is a need for improved migration for any data processing environment that includes a set of complementary data processing resources that require migration.